package ext.tianma.version;

import wt.doc.WTDocument;
import wt.doc.WTDocumentMaster;
import wt.fc.Persistable;
import wt.fc.PersistenceServerHelper;
import wt.part.PartDocHelper;
import wt.part.WTPart;
import wt.part.WTPartDescribeLink;
import wt.part.WTPartReferenceLink;
import wt.util.WTException;


/**Description:部件关联文档时会用到的业务逻辑
 * @author    :  YangWen
 * @create at :  2013-8-12   下午2:33:06
 */
public class PartRefDocumentUtil {
	
	/**
	 * 静态构造函数，防止实例化
	 */
	private PartRefDocumentUtil(){
		
	}
	
	
	/**YW
	 * 创建部件与文档的关系
	 * @param part 指定的部件对象
	 * @param docOid 指定的文档的oid值
	 * @return 创建关系是否成功
	 * @throws WTException 
	 */
	public static boolean createRelation(WTPart part , String docOid) throws WTException{
		
		if(ComToolUtil.isEmpty(part)||ComToolUtil.isEmpty(docOid))
			return false;
		
		Persistable persistable = ComToolUtil.getPersistableFromOid(docOid);
		if(ComToolUtil.isEmpty(persistable)||!(persistable instanceof WTDocument))
			return false;
		
		WTDocument doc = (WTDocument)persistable;
		//如果文档是【参考文档】
		if (PartDocHelper.isReferenceDocument(doc)) {
			WTDocumentMaster docMaster = (WTDocumentMaster) doc.getMaster();	
			//创建一个【关联链接】的关系
			WTPartReferenceLink refLink = WTPartReferenceLink.newWTPartReferenceLink(part, docMaster);
			PersistenceServerHelper.manager.insert(refLink);			
		}
		//如果文档是【说明文档】
		else{
			//创建一个【描述链接】的关系
			WTPartDescribeLink describeLink = WTPartDescribeLink.newWTPartDescribeLink(part,doc);
        	PersistenceServerHelper.manager.insert(describeLink);
		}
				
		return true;
	}
	
	
	
	/**YW
	 * 创建部件与文档的关系
	 * @param part 指定的部件对象
	 * @param doc 指定的文档对象
	 * @return 创建关系是否成功
	 * @throws WTException 
	 */
	public static boolean createRelation(WTPart part , WTDocument doc) throws WTException{
		
		if(ComToolUtil.isEmpty(part)||ComToolUtil.isEmpty(doc))
			return false;
		
		//如果文档是【参考文档】
		if (PartDocHelper.isReferenceDocument(doc)) {
			WTDocumentMaster docMaster = (WTDocumentMaster) doc.getMaster();	
			//创建一个【关联链接】的关系
			WTPartReferenceLink refLink = WTPartReferenceLink.newWTPartReferenceLink(part, docMaster);
			PersistenceServerHelper.manager.insert(refLink);			
		}
		//如果文档是【说明文档】
		else{
			//创建一个【描述链接】的关系
			WTPartDescribeLink describeLink = WTPartDescribeLink.newWTPartDescribeLink(part,doc);
        	PersistenceServerHelper.manager.insert(describeLink);
		}
				
		return true;
	}
	
	
	 
	 

}
